package cn.tedu.storage;

import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * 分布式事务配置类
 * 1.创建原始数据源对象
 * 2.创建数据源代理对象
 *
 * @author 郭鲁政
 */
@Configuration

public class DSAutoConfiguration {
    /**
     * 创建原始数据对象
     * Hikari使用的是jdbcUrl 而不是url 需要单独配置
     * 在启动类中排除spring创建的对象
     *
     * @return
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new HikariDataSource();
    }

    @Primary//首选对象
    @Bean
    public DataSource dataSourceProxy(DataSource ds) {
        return new DataSourceProxy(ds);
    }
}
